// 解题思路：
// 给定一组字符，包含大小字母和小写字母，找能组成的最长的回文串的长度
// 先统计每个字符出现的个数
// 如果是偶数个，这些字符都能用上
// 如果是奇数个字符，假设为 x，能用上 x - 1 个
// 如果有奇数，还能再用上 1 个

public class Solution {
    public int longestPalindrome(String s) {
        int n = s.length();
        int[] hash = new int[100];
        char[] sArr = s.toCharArray();

        for(char ch : sArr) hash[ch - 'A']++;

        int ret = 0;
        boolean flag = false;
        for(int i = 0; i < 100; i++){
            int value = hash[i];
            if(value % 2 == 0){
                ret += value;
            }else {
                ret += (value - 1);
                flag = true;
            }
        }
        return flag ? ret + 1 : ret;
    }
}
